package entidades;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name="Obreros")
public class Obrero implements Serializable{
	
	private static final long serialVersionUID = 1L;

	@Id @GeneratedValue(strategy=GenerationType.AUTO)
	@Column(name="ID_OBRERO")
	private int idObrero;
	
	@Column(nullable=false, length=50, name="NOMBRE")
	private String nombre;
	
	@Column(nullable=false, length=50, name="APELLIDO")
	private String apellido;
	
	@Column(nullable=false, length=11, name="CUIL")
	private String cuil;
	
	@Column(nullable=true, length=50, name="TELEFONO")
	private String telefono;
	
	@Column(nullable=false, length=8, name="NUMERO_DOC")
	private String numeroDoc;
	
	@Column(nullable=false, length=50, name="TIPO_DOC")
	private String tipoDoc;
	
	@Column(nullable=true, length=50, name="NACIONALIDAD")
	private String nacionalidad;
	
	@Column(nullable=true, length=50, name="DOMICILIO")
	private String domicilio;
	
	@Column(nullable=false, length=50, name="LOCALIDAD")
	private String localidad;
	
	@Column(nullable=true, length=1, name="GENERO")
	private String genero;
	
	@Temporal(TemporalType.TIMESTAMP)
	@Column(nullable=false, name="FECHA_VINCULACION")
	private Date fechaVinculacion;
	
	@Column(nullable=true,name="SCORING")
	private float scoring;
	
	@OneToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="ID_PROYECTO") 
	private Proyecto proyecto;
	
	@OneToOne(fetch=FetchType.EAGER)
	@JoinColumn(nullable=false,name="ID_RUBRO")
	private  Rubro rubro;
	

	@OneToMany(fetch=FetchType.LAZY)
	@JoinColumn(name="ID_OBRERO")
	private List<Desempenio> evaluaciones;
	
	@OneToMany(fetch=FetchType.LAZY)
	@JoinColumn(name="ID_OBRERO")
	private List <Accidente> accidentes;
	
	@OneToMany(fetch=FetchType.LAZY)
	@JoinColumn(name="ID_OBRERO")
	private List <Ausencia> ausencias;
	
	
	
	public Obrero(){
		
	}
	
	
	public int getIdObrero() {
		return idObrero;
	}
	public String getNombre() {
		return nombre;
	}
	public String getApellido() {
		return apellido;
	}
	public String getCuil() {
		return cuil;
	}
	public String getTelefono() {
		return telefono;
	}
	public String getNumeroDoc() {
		return numeroDoc;
	}
	public String getTipoDoc() {
		return tipoDoc;
	}
	public String getNacionalidad() {
		return nacionalidad;
	}
	public String getDomicilio() {
		return domicilio;
	}
	public String getLocalidad() {
		return localidad;
	}
	public String getGenero() {
		return genero;
	}
	public Date getFechaVinculacion() {
		return fechaVinculacion;
	}
	public float getScoring() {
		return scoring;
	}
	public Proyecto getProyectoAsignado() {
		return proyecto;
	}
	public List<Desempenio> getEvaluaciones() {
		return evaluaciones;
	}
	public List<Accidente> getAccidentes() {
		return accidentes;
	}
	public List<Ausencia> getAusencias() {
		return ausencias;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public void setApellido(String apellido) {
		this.apellido = apellido;
	}
	public void setCuil(String cuil) {
		this.cuil = cuil;
	}
	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}
	public void setNumeroDoc(String numeroDoc) {
		this.numeroDoc = numeroDoc;
	}
	public void setTipoDoc(String tipoDoc) {
		this.tipoDoc = tipoDoc;
	}
	public void setNacionalidad(String nacionalidad) {
		this.nacionalidad = nacionalidad;
	}
	public void setDomicilio(String domicilio) {
		this.domicilio = domicilio;
	}
	public void setLocalidad(String localidad) {
		this.localidad = localidad;
	}
	public void setGenero(String genero) {
		this.genero = genero;
	}
	public void setFechaVinculacion(Date fechaVinculacion) {
		this.fechaVinculacion = fechaVinculacion;
	}
	public void setScoring(float scoring) {
		this.scoring = scoring;
	}
	public void setProyectoAsignado(Proyecto proyectoAsignado) {
		this.proyecto = proyectoAsignado;
	}
	public void setEvaluaciones(List<Desempenio> evaluaciones) {
		this.evaluaciones = evaluaciones;
	}
	public void setAccidentes(List<Accidente> accidentes) {
		this.accidentes = accidentes;
	}
	public void setAusencias(List<Ausencia> ausencias) {
		this.ausencias = ausencias;
	}
	public void setRubro(Rubro rubro) {
		this.rubro = rubro;
	}
	public Rubro getRubro() {
		return rubro;
	}
	@Override
	public String toString(){
		return this.getApellido()+", "+this.getNombre();
	}
	
	
}
